# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Compute.V1.Model.DeprecationStatus do
  @moduledoc """
  Deprecation status for a public resource.

  ## Attributes

  *   `deleted` (*type:* `String.t`, *default:* `nil`) - An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
  *   `deprecated` (*type:* `String.t`, *default:* `nil`) - An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
  *   `obsolete` (*type:* `String.t`, *default:* `nil`) - An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
  *   `replacement` (*type:* `String.t`, *default:* `nil`) - The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
  *   `state` (*type:* `String.t`, *default:* `nil`) - The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :deleted => String.t() | nil,
          :deprecated => String.t() | nil,
          :obsolete => String.t() | nil,
          :replacement => String.t() | nil,
          :state => String.t() | nil
        }

  field(:deleted)
  field(:deprecated)
  field(:obsolete)
  field(:replacement)
  field(:state)
end

defimpl Poison.Decoder, for: GoogleApi.Compute.V1.Model.DeprecationStatus do
  def decode(value, options) do
    GoogleApi.Compute.V1.Model.DeprecationStatus.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Compute.V1.Model.DeprecationStatus do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
